home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / blas / lsame.f < prev    next >
Text File  |  1997-01-29  |  3KB  |  88 lines

  1.       LOGICAL          FUNCTION LSAME( CA, CB )
  2. *
  3. *  -- LAPACK auxiliary routine (version 2.0) --
  4. *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
  5. *     Courant Institute, Argonne National Lab, and Rice University
  6. *     January 31, 1994
  7. *
  8. *     .. Scalar Arguments ..
  9.       CHARACTER          CA, CB
  10. *     ..
  11. *
  12. *  Purpose
  13. *  =======
  14. *
  15. *  LSAME returns .TRUE. if CA is the same letter as CB regardless of
  16. *  case.
  17. *
  18. *  Arguments
  19. *  =========
  20. *
  21. *  CA      (input) CHARACTER*1
  22. *  CB      (input) CHARACTER*1
  23. *          CA and CB specify the single characters to be compared.
  24. *
  25. * =====================================================================
  26. *
  27. *     .. Intrinsic Functions ..
  28.       INTRINSIC          ICHAR
  29. *     ..
  30. *     .. Local Scalars ..
  31.       INTEGER            INTA, INTB, ZCODE
  32. *     ..
  33. *     .. Executable Statements ..
  34. *
  35. *     Test if the characters are equal
  36. *
  37.       LSAME = CA.EQ.CB
  38.       IF( LSAME )
  39.      $   RETURN
  40. *
  41. *     Now test for equivalence if both characters are alphabetic.
  42. *
  43.       ZCODE = ICHAR( 'Z' )
  44. *
  45. *     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
  46. *     machines, on which ICHAR returns a value with bit 8 set.
  47. *     ICHAR('A') on Prime machines returns 193 which is the same as
  48. *     ICHAR('A') on an EBCDIC machine.
  49. *
  50.       INTA = ICHAR( CA )
  51.       INTB = ICHAR( CB )
  52. *
  53.       IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
  54. *
  55. *        ASCII is assumed - ZCODE is the ASCII code of either lower or
  56. *        upper case 'Z'.
  57. *
  58.          IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
  59.          IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
  60. *
  61.       ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
  62. *
  63. *        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
  64. *        upper case 'Z'.
  65. *
  66.          IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
  67.      $       INTA.GE.145 .AND. INTA.LE.153 .OR.
  68.      $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
  69.          IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
  70.      $       INTB.GE.145 .AND. INTB.LE.153 .OR.
  71.      $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
  72. *
  73.       ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
  74. *
  75. *        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
  76. *        plus 128 of either lower or upper case 'Z'.
  77. *
  78.          IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
  79.          IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
  80.       END IF
  81.       LSAME = INTA.EQ.INTB
  82. *
  83. *     RETURN
  84. *
  85. *     End of LSAME
  86. *
  87.       END
  88.